Hrvatski

Sveobuhvatan vodič za CSS svojstvo overscroll-behavior, istražujući njegove vrijednosti, primjere i najbolje prakse za kontrolu granica pomicanja i stvaranje besprijekornog korisničkog iskustva.

CSS svojstvo overscroll-behavior: ovladajte kontrolom granica pomicanja za poboljšani UX

U modernom webu, stvaranje glatkih i intuitivnih korisničkih iskustava je od presudne važnosti. Jedan ključan aspekt toga je upravljanje ponašanjem pomicanja, posebno kada korisnici dosegnu granice područja koja se mogu pomicati. Tu na scenu stupa CSS svojstvo overscroll-behavior. Ovaj sveobuhvatan vodič detaljno će istražiti overscroll-behavior, pokrivajući njegova svojstva, slučajeve upotrebe i najbolje prakse za postizanje poboljšane interakcije korisnika.

Što je overscroll-behavior?

overscroll-behavior je CSS svojstvo koje kontrolira što se događa kada se dosegne granica pomicanja elementa (npr. spremnika za pomicanje ili samog dokumenta). Prema zadanim postavkama, kada korisnik pomakne sadržaj preko gornje ili donje granice područja za pomicanje, preglednik često pokreće ponašanja poput osvježavanja stranice (na mobilnim uređajima) ili pomicanja pozadinskog sadržaja. overscroll-behavior omogućuje programerima da prilagode to ponašanje, sprječavajući neželjene nuspojave i stvarajući besprijekornije iskustvo.

Razumijevanje svojstava

Svojstvo overscroll-behavior prihvaća tri primarne vrijednosti:

Dodatno, overscroll-behavior se može primijeniti na određene osi pomoću sljedećih podsvojstava:

Na primjer:

.scrollable-container {
  overscroll-behavior-y: contain; /* Sprječava vertikalno lančano pomicanje */
  overscroll-behavior-x: auto;    /* Omogućuje horizontalno lančano pomicanje */
}

Slučajevi upotrebe i primjeri

Svojstvo overscroll-behavior može se koristiti u raznim scenarijima za poboljšanje korisničkog iskustva i sprječavanje nenamjernog ponašanja. Istražimo neke uobičajene slučajeve upotrebe s praktičnim primjerima.

1. Sprječavanje osvježavanja stranice na mobitelu

Jedna od najčešćih upotreba svojstva overscroll-behavior je sprječavanje iritantnog osvježavanja stranice koje se često događa na mobilnim uređajima kada korisnik pomakne sadržaj preko vrha ili dna stranice. Ovo je posebno važno za aplikacije na jednoj stranici (SPA) i web stranice s dinamičkim sadržajem.

body {
  overscroll-behavior-y: contain; /* Sprječava osvježavanje stranice pri prekoračenju pomicanja */
}

Primjenom overscroll-behavior: contain na body element, možete spriječiti ponašanje povlačenja za osvježavanje na mobilnim uređajima, osiguravajući glađe i predvidljivije korisničko iskustvo.

2. Zadržavanje pomicanja unutar modala i slojeva

Kada koristite modale ili slojeve, često je poželjno spriječiti pomicanje pozadinskog sadržaja dok je modal otvoren. overscroll-behavior se može koristiti za zadržavanje pomicanja unutar samog modala.

.modal {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: auto; /* Omogućuje pomicanje unutar modala */
  overscroll-behavior: contain; /* Sprječava pomicanje pozadinskog sadržaja */
}

.modal-content {
  /* Stil za sadržaj modala */
}

U ovom primjeru, element .modal ima overscroll-behavior: contain, što sprječava pomicanje pozadinske stranice kada korisnik dosegne granicu pomicanja modala. Svojstvo overflow: auto osigurava da se sam modal može pomicati ako njegov sadržaj premašuje njegovu visinu.

3. Stvaranje prilagođenih indikatora pomicanja

Postavljanjem overscroll-behavior: none, možete potpuno onemogućiti zadane efekte prekoračenja pomicanja i implementirati prilagođene indikatore pomicanja ili animacije. To omogućuje veću kontrolu nad korisničkim iskustvom i mogućnost stvaranja jedinstvenih i privlačnih interakcija.

.scrollable-area {
  overflow: auto;
  overscroll-behavior: none; /* Onemogućuje zadano ponašanje prekoračenja pomicanja */
}

.scrollable-area::-webkit-scrollbar {
  display: none; /* Skriva zadanu traku za pomicanje (opcionalno) */
}

.scroll-indicator {
  /* Stil za vaš prilagođeni indikator pomicanja */
  position: absolute;
  bottom: 10px;
  left: 50%;
  transform: translateX(-50%);
  /* ... */
}

.scrollable-area:after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 20px;
  background: linear-gradient(to top, rgba(0,0,0,0.1), transparent);
  pointer-events: none; /* Omogućuje pomicanje kroz indikator */
}

Ovaj primjer demonstrira kako onemogućiti zadano ponašanje prekoračenja pomicanja i stvoriti prilagođeni indikator pomicanja pomoću CSS pseudo-elemenata i gradijenata. Svojstvo pointer-events: none osigurava da indikator ne ometa pomicanje.

4. Poboljšanje vrtuljaka i klizača

overscroll-behavior-x može biti posebno korisno za vrtuljke i klizače gdje je horizontalno pomicanje primarna interakcija. Postavljanjem overscroll-behavior-x: contain, možete spriječiti da vrtuljak slučajno pokrene navigaciju preglednika naprijed/natrag na mobilnim uređajima.

.carousel {
  display: flex;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  overscroll-behavior-x: contain; /* Sprječava navigaciju naprijed/natrag */
}

.carousel-item {
  scroll-snap-align: start;
  /* ... */
}

Ovaj isječak koda pokazuje kako zadržati horizontalno pomicanje unutar vrtuljka, sprječavajući neželjenu navigaciju i osiguravajući usmjereno korisničko iskustvo.

5. Poboljšanje pristupačnosti u područjima za pomicanje

Pri implementaciji područja za pomicanje, važno je uzeti u obzir pristupačnost. Iako overscroll-behavior prvenstveno utječe na vizualne interakcije, može neizravno utjecati na pristupačnost sprječavanjem neočekivanog ponašanja i osiguravanjem dosljednog korisničkog iskustva na različitim uređajima i preglednicima.

Pobrinite se da područja za pomicanje imaju odgovarajuće ARIA atribute (npr. role="region", aria-label) kako bi pružili semantičke informacije pomoćnim tehnologijama. Testirajte svoje implementacije s čitačima zaslona kako biste provjerili je li ponašanje pomicanja pristupačno i predvidljivo.

Najbolje prakse i razmatranja

Kada koristite overscroll-behavior, imajte na umu sljedeće najbolje prakse i razmatranja:

Kompatibilnost s preglednicima

Svojstvo overscroll-behavior ima izvrsnu podršku u modernim preglednicima, uključujući Chrome, Firefox, Safari i Edge. Međutim, uvijek je dobra ideja provjeriti najnovije informacije o kompatibilnosti preglednika na web stranicama poput Can I Use (caniuse.com) kako biste osigurali da vaša ciljana publika može ispravno iskusiti vaše implementacije.

Za starije preglednike koji ne podržavaju overscroll-behavior, možda ćete trebati koristiti polyfillove ili alternativne tehnike za postizanje sličnih efekata. Međutim, imajte na umu da ti pristupi možda neće savršeno replicirati ponašanje nativnog overscroll-behavior.

Primjeri s kodom i globalnim kontekstom

Primjer 1: Višejezična podrška u traci s vijestima

Zamislite traku s vijestima koja prikazuje naslove na više jezika. Želite osigurati glatko pomicanje bez obzira na korišteni jezik, sprječavajući slučajna osvježavanja stranice na mobitelu.

<div class="news-ticker">
  <ul>
    <li><span lang="en">Breaking News: Global Stock Market Update</span></li>
    <li><span lang="fr">Dernières Nouvelles: Mise à Jour du Marché Boursier Mondial</span></li>
    <li><span lang="ja">速報:世界の株式市場の最新情報</span></li>
    <!-- Više naslova na različitim jezicima -->
  </ul>
</div>

<style>
.news-ticker {
  overflow-x: auto;
  overscroll-behavior-x: contain; /* Sprječava slučajno naprijed/natrag na mobitelu */
  white-space: nowrap;
}

.news-ticker ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: inline-block;
  animation: ticker 20s linear infinite;
}

.news-ticker li {
  display: inline-block;
  margin-right: 20px;
}

@keyframes ticker {
  0% { transform: translateX(100%); }
  100% { transform: translateX(-100%); }
}
</style>

Primjenom overscroll-behavior-x: contain na element .news-ticker, sprječavate da traka s vijestima slučajno pokrene navigaciju preglednika naprijed/natrag na mobilnim uređajima, bez obzira na jezik koji se prikazuje.

Primjer 2: Međunarodni katalog proizvoda sa slikama koje se mogu zumirati

Razmotrite web stranicu za e-trgovinu koja sadrži katalog proizvoda sa slikama koje se mogu zumirati. Želite spriječiti pomicanje pozadinske stranice dok korisnici zumiraju slike unutar kataloga.

<div class="product-catalog">
  <div class="product">
    <img src="product1.jpg" alt="Slika proizvoda" class="zoomable-image">
  </div>
  <div class="product">
    <img src="product2.jpg" alt="Slika proizvoda" class="zoomable-image">
  </div>
  <!-- Više proizvoda -->
</div>

<style>
.product-catalog {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-around;
}

.product {
  width: 300px;
  margin: 20px;
}

.zoomable-image {
  width: 100%;
  cursor: zoom-in;
}

.zoomable-image.zoomed {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  background-color: rgba(0, 0, 0, 0.8);
  cursor: zoom-out;
  overscroll-behavior: contain; /* Sprječava pomicanje pozadinske stranice */
}
</style>

<script>
const images = document.querySelectorAll('.zoomable-image');

images.forEach(image => {
  image.addEventListener('click', () => {
    image.classList.toggle('zoomed');
  });
});
</script>

U ovom primjeru, kada korisnik klikne na .zoomable-image, ona se prebacuje u zumirano stanje s position: fixed, prekrivajući cijeli prozor za prikaz. Svojstvo overscroll-behavior: contain primjenjuje se na zumiranu sliku, sprječavajući pomicanje pozadinskog kataloga proizvoda dok je slika zumirana.

Zaključak

overscroll-behavior je moćno CSS svojstvo koje programerima pruža veću kontrolu nad granicama pomicanja i korisničkim iskustvom. Razumijevanjem njegovih svojstava i slučajeva upotrebe, možete stvoriti glađe, intuitivnije interakcije i spriječiti nenamjerno ponašanje na svojim web stranicama i aplikacijama. Ne zaboravite temeljito testirati, uzeti u obzir pristupačnost i promišljeno koristiti overscroll-behavior kako biste postigli najbolje rezultate. Učinkovita implementacija overscroll-behavior zahtijeva balansiranje kontrole i očekivanja korisnika, poboljšavajući upotrebljivost bez ometanja prirodnih interakcija.

Daljnje učenje